package culosic.mdpocket.core;

import java.util.*;

public interface Node {
	/**
	 * 显示节点及迭代子节点的内容
	 * 
	 * @param out
	 */
	public void show(Out out);

	/**
	 * 追加子节点
	 * 
	 * @param child
	 */
	public void appendChild(Node child);

	/**
	 * 获得指定子节点
	 * 
	 * @param i
	 *            子节点在父节点孩子数组中的位置
	 * @return
	 */
	public Node getChild(int i);

	/**
	 * 设置父节点
	 * 
	 * @param parent
	 */
	public void setParent(Node parent);

	/**
	 * 获取父节点
	 * 
	 * @return 父节点
	 */
	public Node getParent();

	/**
	 * 获取所有子节点
	 * 
	 * @return 子节点集合
	 */
	public List<Node> getChilds();

	/**
	 * 删除所有子节点
	 */
	public void clear();

}
